﻿// *********************************************************************
// [DCOM Productions]
// [Copyright (C) DCOM Productions All rights reserved.]
// *********************************************************************

namespace BitFlex {
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections.ObjectModel;

    /// <summary>
    /// Represents a command line argument passed into the application by the Windows Shell
    /// </summary>
    /// <example>
    /// Pattern:
    ///     -argument:value
    ///     -argument
    /// Example:
    ///     -path:"C:\Program Files\MyProgram"
    ///     -username:danderson
    ///     -password:bitflex
    ///     -enablevisualstyles
    ///     -directxmode
    /// </example>
    public class CommandLineArgument {
        /// <summary>
        /// Initializes a new instance of the BitFlex.CommandLineArgument class
        /// </summary>
        /// <param name="name">The name of the argument</param>
        /// <param name="parameters">The parameters associated with this argument</param>
        public CommandLineArgument(string name, string value) {
            this.Name = name;
            this.Value = value;
        }

        /// <summary>
        /// Initializes a new instance of the BitFlex.CommandLineArgument class
        /// </summary>
        /// <param name="name">The name of the argument</param>
        public CommandLineArgument(string name)
            : this(name, null) {
        }

        /// <summary>
        /// Initializes a new instance of the BitFlex.CommandLineArgument class
        /// </summary>
        public CommandLineArgument() 
            : this(string.Empty, null) {
        }

        /// <summary>
        /// Gets or sets the name of the argument
        /// </summary>
        public string Name {
            get;
            set;
        }
        
        /// <summary>
        /// Gets or sets the value of the argument
        /// </summary>
        public string Value {
            get;
            set;
        }
    }
}